<template>
    <div>
        <!-- 使用kepp-alive缓存组件内容 -->
        <!-- keep-alive 的max表最大的意思，限制缓存最多...个组件的内容-->
        <!-- transition mode="out-in",意思是动画先出后进，让其动画效果更平滑 -->
        <!-- 拿取route:直接传递下来使用;route前加$符号 -->
        <!-- 绑定key值的作用是避免点击不同的页面进行编辑出现相同内容的页面 -->
        <!-- component，绑定is的属性必须是Component(固定的)，且第一个字母大写 -->
        <!-- 使用v-if判断是否有keepAlive标识则缓存这个组件的内容，否则默认不缓存 -->
        <router-view v-slot="{ Component }">
            <transition mode="out-in" name="slide-fade">
                <keep-alive :max="5">
                    <component :is="Component" v-if="$route.meta.keepAlive" :key="$route.fullPath"></component>
                </keep-alive>
            </transition>
            <transition mode="out-in" name="slide-fade">
                <component :is="Component" v-if="!$route.meta.keepAlive" :key="$route.fullPath" />
            </transition>
        </router-view>
    </div>
</template>
<style type="text/css">
.slide-fade-enter-active {
    text-emphasis: all 0.3s ease-out;
}

.slide-fade-leave-active {
    transition: all 0.3s cubic-bezier(1, 0.5, 0.8, 1);
}

/* v-enter-from:进入动画的起始状态 */
.slide-fade-enter-from,
.slide-fade-leave-to {
    transform: translateX(-50px);
    opacity: 0;
}
</style>

